Personal digital devices are used in many different situations. For example, a person can carry a cellular telephone or smartphone that by wireless connection provides access to network services and other resources in a wide geographic area. Such devices are sometimes used in business and sometimes for personal purposes. For example, sales agents or other traveling company representatives can be provided with a smartphones that synchronize with the company's computer system. Warehouse workers can use handheld PDAs for tracking of goods movement or inventory, a nurse may use a PDA for controlled dispense of drugs, or a smartphone to check if medicament is authentic or not.
Software can be designed for one or more kinds of mobile devices. A company can use a specialized software client on the cell phone that connects with the main computer system. For example, SAP AG NetWeaver® Mobile and ITSmobile are examples of client applications compatible with its SAP's solutions.
Portable digital devices make use of mobile peripheral devices to perform their functions, For example, a cell phone is equipped with a speaker, a display and a microphone that are controlled by the processor inside the phone. Some phones also have cameras. Specific mobile devices can have highly specialized peripheral components, for example a fingerprint reader, an RFID reader, a barcode scanner, GPS receiver, camera or a printer. A peripheral device transforms for example a radio signal (RFID or GPS) or a visible light signal (bar code, photo) into an electrical signal, which is then typically transformed into binary data, using a processing unit embedded into peripheral devices (electronic circuits, microcontrollers, microcomputers . . . ). The processing unit of the mobile peripheral device provides communication so that binary representations of physical values can be read from the device, or so that some configuration parameters of the device can be set. The user of mobile peripherals' communication channels is typically a mobile application, which needs to understand the communication protocol of the peripheral device.
When mobile devices are manufactured, the peripheral devices to be integrated in the device are often obtained from third-party vendors. Moreover, such devices often are configured to use a device-specific communication protocol, and a special driver library is created for the mobile device. In general, mobile applications need to be tested for every peripheral device they are supposed to support, which increases the cost of development and maintenance, and makes the application more complex. As another example, peripheral devices can make it more labor intensive to accomplish portability of applications across devices and platforms.
However, in a mobile device intended for use with several different client applications, the device functionality as exposed to applications in the mobile device is not optimized for any of the mobile applications. Rather, the device vendor often provides a software development kit (SDK) for use in integrating the device functionality in the mobile application.
Such integration generally cannot be made by the mobile device vendor, because they lack sufficient detail knowledge about the mobile application. Also, in situations where the mobile client is created by an enterprise resource planning (ERP) solutions vendor, for example SAP, such a vendor is not directly involved in selecting or designing the third-party peripheral device, and so has less ability and incentive to customize the device using the SDK. As a result, a third party consultant is often engaged to integrate the peripheral device functionality in the mobile application. This can lead to a slower or more complicated implementation process, and it can increase the overall cost for the implementation.
As another example, with such an integration the peripheral device becomes very tightly bound to the mobile application; the device functionality is compiled together with the mobile application. This means that when a mobile application that is designed for one mobile hardware platform should be extended to another platform, not only must the mobile application essentially be coded again, but so must the integration of the peripheral because it is so closely connected with the mobile application.